package com.day9.test1_arr;

/**
 * @author 小坡
 * @date 2022/9/11  19:20
 **/
public class MyBinarySearch {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
//        int num = 3;  //2
        int num = 11;  //  -1
//        1,我现在要干嘛?---二分查找
//        2.我干这件事情需要什么?---数组元素
//        3,我干完了,要不要把结果返回调用者---把索引返回给调用者
        int index = binarysearchForIndex(arr, num);
        System.out.println(index);
    }

    private static int binarysearchForIndex(int[] arr, int num) {
//  定义查找的范围
        int min = 0;
        int max = arr.length - 1;
//        循环查找   min<max
        while (min < max) {
//            右移一位  也表示除以2 的意思
            int mid = (min + max) >> 1;
//            mid指向的元素大于num
            if (arr[mid] > num) {
//                查找的元素在左边
                max = mid - 1;
            }
//            mid指向的元素小于num
            else if (arr[mid] < num) {
                min = mid + 1;
            }
//            mid指向的元素等于num
            else {
//                mid就是索要查找的值
                return mid;
            }
        }
//        元素不存在
        return -1;
    }
}
